<?php
defined('SYSPATH') OR die('No Direct Script Access');
session_name('curriculo');
@session_start();
include "application/classes/model/Curriculo.php";
include "application/classes/visualizacao/PaginaDeCurriculo.php";
include "application/classes/model/Candidato.php";
include "application/classes/model/Endereco.php";
include "application/classes/model/Deficiencia.php";
include "application/classes/model/DificuldadeDevidoDeficienciaIntelectual.php";
include "application/classes/model/Escolaridade.php";
include "application/classes/model/Idioma.php";
include "application/classes/model/Comunicacao.php";
include "application/classes/model/Informatica.php";
include "application/classes/model/ExperienciaProfissional.php";
include "application/classes/model/Empresa.php";
include "application/classes/model/Atividade.php";
include "application/classes/model/Palestra.php";
include "application/classes/model/Curso.php";
include "application/classes/model/Voluntariado.php";
include "application/classes/model/AtividadeComplementar.php";
include "application/classes/visualizacao/PaginaDeConfirmacao.php";
include "application/classes/util/DateUtil.php";
include "application/classes/model/persistencia/CandidatoCurriculoRegister.php";

Class Controller_GerenciadorDeCurriculo extends Controller_templatecurriculo
{

	public $errors = array();
	public $camposDoFormulario;
	public $sheets = array('reset' => 'screen', 'main' => 'screen');
	public $paginaDeCurriculo;
	private $candidato;
	private $endereco;
	private $deficiencias;
	private $escolaridade;
	private $idioma;
	private $comunicacao;
	private $informatica;
	private $experienciaProfissional;
	private $areaDeInteresse;
	private $atividade;
	private $isOperacaoRealizada;
	private $mensagemStatusInsercao;

	function action_index(){
		$_SESSION['pagina_corrente'] = "curriculo";
		$this->isOperacaoRealizada = false;
		$this->mensagemStatusInsercao = "";
		$this->carregarDadosDaPagina();
		$this->carregarFormulario();
	}
	
	public function carregarDadosDaPagina(){
		$this->candidato = unserialize($_SESSION['candidato']);
		$this->endereco = unserialize($_SESSION['endereco']);
		$this->deficiencias = unserialize($_SESSION['deficiencia']);
		$this->escolaridade = unserialize($_SESSION['escolaridade']);
		$this->idioma = unserialize($_SESSION['idioma']);
		$this->comunicacao = unserialize($_SESSION['comunicacao']);
		$this->informatica = unserialize($_SESSION['informatica']);
		$this->experienciaProfissional = unserialize($_SESSION['experienciaProfissional']);
		$this->areaDeInteresse = unserialize($_SESSION['areaDeInteresse']);
		$this->atividade = unserialize($_SESSION['atividades']);
		
		$this->paginaDeCurriculo = new PaginaDeCurriculo($this->candidato, $this->endereco, $this->deficiencias, $this->escolaridade, $this->idioma, $this->comunicacao, $this->informatica, $this->experienciaProfissional, $this->areaDeInteresse, $this->atividade);
	}
	
	function carregarFormulario(){
		$ko3_inner               = array();
		$ko3                     = array();
		$this->template->title   = 'Psicopuc WWW Ver. 3.0';
		View::set_global('x', 'Esta e uma variavel global');
		$ko3_inner['content']    = 'Dados(Exemplo)';
		$ko3['content']          = 'Dados2(Exemplo)';
		$this->template->menu    = View::factory('blocks/menu_formulario')
	    						  ->render(); 
		$this->template->header  = View::factory('blocks/pagina_header', $ko3_inner)
	                              ->render();
	    $this->template->footer  = View::factory('blocks/pagina_footer')
	                              ->render();                          
	    $this->template->content = View::factory('Formularios/FormularioDeCurriculo', $ko3)		
	    ->bind('errors', $this->errors)
	    ->bind('camposDoFormulario', $this->camposDoFormulario)
	    ->bind('paginaDeCurriculo', $this->paginaDeCurriculo);                       
		
	}


	public function action_validarForm(){
		
		//Iniciação dos campos 
		
		//Obtenção dos dados enviados pelo candidato através dos formularios 
		$this->candidato = unserialize($_SESSION['candidato']);
		$this->endereco = unserialize($_SESSION['endereco']);
		$this->deficiencias = unserialize($_SESSION['deficiencia']);
		$this->escolaridade = unserialize($_SESSION['escolaridade']);
		$this->idioma = unserialize($_SESSION['idioma']);
		$this->comunicacao = unserialize($_SESSION['comunicacao']);
		$this->informatica = unserialize($_SESSION['informatica']);
		$this->experienciaProfissional = unserialize($_SESSION['experienciaProfissional']);
		$this->areaDeInteresse = unserialize($_SESSION['areaDeInteresse']);
		$this->atividade = unserialize($_SESSION['atividades']);
		
		
		$acao = "";
		$tipoDeAcao = "";

		if(isset($_POST['form_button'])){
			$acao = $_POST['form_button'];
		}
		
		if($acao == "Enviar"){
			
			$candidatoCurriculoRegister = new CandidatoCurriculoRegister($this->candidato, $this->endereco, $this->deficiencias, $this->escolaridade, $this->idioma, $this->comunicacao, $this->informatica, $this->experienciaProfissional, $this->areaDeInteresse, $this->atividade);
			//$this->testaAtributos(); // Debug & test mode
			//Esta chamada foi definida no inicio da carga do formulário baseado no tipo de 
			//ação realizada pelo usuário se está "logado" para atualização ou está realizando 
			//um primeiro registro do curriculo
			//Tipo de ação pode ser "REGISTER" ou "UPDATE"
			if(isset($_SESSION['status']))
			{
				$tipoDeAcao = $_SESSION['status'];
			}
			
			if($tipoDeAcao == "REGISTER"){
				echo "<br>GDC:130:REGISTER:cheguei aqui...";
				$candidatoCurriculoRegister->persistirCurriculo();
				
			}
			else if($tipoDeAcao == "UPDATE"){
				echo "<br>GDC:130:UPDATE:cheguei aqui...";
				$candidatoCurriculoRegister->curriculoUpdate();
			}
			//$this->persistirCurriculo(); //Metodo presente nesta página, após validar o Register acima, apagar o método, refatorar classe			
			$paginaConfirmacao = new PaginaDeConfirmacao();
			$paginaConfirmacao->setCadastroEfetuado($candidatoCurriculoRegister->isOperacaoRealizada());
			$paginaConfirmacao->setMensagemStatus($candidatoCurriculoRegister->getMensagemStatus());
			$_SESSION['confirmacao'] = serialize($paginaConfirmacao);
			echo "<meta http-equiv=Refresh content=0;url=".url::site()."CadastroDeCurriculo>";
		
		
		}
		else if($acao == "Voltar"){
			echo "<meta http-equiv=Refresh content=0;url=".url::site()."GerenciadorDeAtividades>";
		}
	}
	
	
	public function testaAtributos(){
		
		foreach ($this->deficiencias as $deficiencia){
			//a deficiencia foi previamente serializada no controle do formularia de deficiência - realizando a desserialização
			$defCorrente = unserialize($deficiencia);

			$dificuldades = $defCorrente->getDificuldadesDevidoDeficiencia();
			print_r($dificuldades);
			foreach ($dificuldades as $dificuldade){
				echo "<br>dificuldade = " . $dificuldade->getDificuldadeDevidoDevidoDeficiencia();
			}
		}
	}
	
	
	//Método de negócio "no controle" para persistir o curriculo baseado na solução ORM do Kohana
	//Se possivel diminuir a carga do controle e criar classes de negócio para realizar esta operação
	/**
	 * @pre operacaoRealizada = false
	 * 
	 * @return 
	 */
	
}

?>